package com.yc.myspringboot.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import com.yc.myspringboot.util.RedisUtil;

@Configuration
public class RedisConfig {

//	/**
//	 * 实例化RedisTemplate对象
//	 * 提供给RedisUtil使用
//	 * @param factory
//	 * @return
//	 */
//	@Bean
//	public RedisTemplate<String, Object> RedisTemplate(RedisConnectionFactory factory) {
//		RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
//		initRedisTemplate(redisTemplate, factory);
//		
//		return redisTemplate;
//	}
//	/**
//	 * 设置数据存储redis的序列化方式，并开启事务
//	 * @param redisTemplate
//	 * @param factory
//	 */
//	private void initRedisTemplate(RedisTemplate<String, Object> redisTemplate, RedisConnectionFactory factory) {
//		//如果不配置serializer，那么存储的时候缺省使用String，如果用User类型，那么会提示错误User can't cast to string
//		redisTemplate.setKeySerializer(new StringRedisSerializer());
//		redisTemplate.setHashKeySerializer(new StringRedisSerializer());
//		redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
//		redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
//		//开启事务
//		redisTemplate.setEnableTransactionSupport(true);
//		redisTemplate.setConnectionFactory(factory);
//	}
//	
//	/**
//	 * 通过注入RedisTemplate来注册生成redis工具类
//	 * @param redisTemplate
//	 * @return
//	 */
//	@Bean("redisUtil")
//	public RedisUtil redisUtil(RedisTemplate<String, Object> redisTemplate) {
//		RedisUtil redisUtil = new RedisUtil();
//		redisUtil.setRedisTemplate(redisTemplate);
//		return redisUtil;
//	}
	
}
